package com.qfedu.bigdataapp.activity;

import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.qfedu.bigdataapp.fragment.ContractsFragment;
import com.qfedu.bigdataapp.fragment.DiscoverFragment;
import com.qfedu.bigdataapp.fragment.IndexFragment;
import com.qfedu.bigdataapp.fragment.MyFragment;
import com.qfedu.bigdataapp.R;

/**
 * 项目的主界面：MainActivity
 */
public class MainActivity extends FragmentActivity {
    private TextView tvTitle;
    private TextView tvIndex, tvContract, tvDiscover, tvMine;

    //定义一个首页Fragment变量，方便MainActivity对其的显示进行管理
    private IndexFragment indexFragment;
    private ContractsFragment contractsFragment;//通讯录碎片
    private DiscoverFragment discoverFragment;//发现碎片
    private MyFragment myFragment;// 我的碎片
    //碎片Fragment管理器
    private FragmentManager fragmentManager;

    //该函数相当于java代码的main函数，可以理解为一个界面启动时，系统会自动调用该函数
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置内容视图
        setContentView(R.layout.activity_main);

        //视图初始化操作
        initView();

        //初始化Fragment对象
        //创建 首页Fragment 对象
        indexFragment = new IndexFragment();
        contractsFragment = new ContractsFragment();
        discoverFragment = new DiscoverFragment();
        myFragment = new MyFragment();

        //默认 展示 首页Fragment 的内容
        fragmentManager = getSupportFragmentManager();
        //fragment管理器 通过事务 对fragment进行管理
        //事务的工作方式：①开启事务  ②编写事务代码  ③提交事务
        //1、开始事务
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        //2、执行事务代码
        transaction.replace(R.id.view_fragment, indexFragment);
        //3、提交事务
        transaction.commit();
    }

    /**
     * 关于控件初始化操作的代码封装在initView方法中
     */
    private void initView() {
        //拿到布局文件中的控件
        tvTitle = findViewById(R.id.tv_title);
        tvIndex = findViewById(R.id.tv_home);
        tvContract = findViewById(R.id.tv_contract);
        tvDiscover = findViewById(R.id.tv_discover);
        tvMine = findViewById(R.id.tv_mine);
        //为底部四个TextView 设置点击事件
        //首页 按钮的点击事件监听
        tvIndex.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //点击底部的第一个按钮时，程序会到此处执行
                //展示 首页Fragment
                //重新展示首页Fragment
                FragmentTransaction transaction = fragmentManager.beginTransaction();
                transaction.replace(R.id.view_fragment, indexFragment);
                transaction.commit();//提交事务生效

                //更改标题为 "微信"
                tvTitle.setText("微信");
            }
        });
        //通讯录按钮
        tvContract.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //点击底部第二个按钮时，程序会到此处执行
                //展示 通讯录Fragment
                FragmentTransaction transaction = fragmentManager.beginTransaction();
                transaction.replace(R.id.view_fragment, contractsFragment);
                transaction.commit();

                //切换碎片显示时，标题也随之更换
                tvTitle.setText("通讯录");
            }
        });
        //发现按钮的点击监听事件
        tvDiscover.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //点击第三个按钮时，程序会到此处执行
                //展示 发现Fragment
                FragmentTransaction transaction = fragmentManager.beginTransaction();
                transaction.replace(R.id.view_fragment, discoverFragment);
                transaction.commit();//提交事务生效
                //更改标题为发现
                tvTitle.setText("发现");
            }
        });
        //我的 按钮 的点击事件监听
        tvMine.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //点击第四个按钮时，程序会到此处执行
                //展示 我的Fragment
                FragmentTransaction transaction = fragmentManager.beginTransaction();
                transaction.replace(R.id.view_fragment, myFragment);
                transaction.commit();//提交事务生效
                //更改标题为"我"
                tvTitle.setText("我");
            }
        });
        //为什么写this,会报错？
        //因为setOnClickListener方法需要接收一个OnClickListener类型对象
        //此处的this指的是当前类MainActivity, MainActivity并不是OnClickListener类型
    }

    /**
     * 打开登录界面的方法
     */
    private void openLogin() {
        //用于启动一个新界面
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
    }

    public void opennews() {
        Intent intent = new Intent(this, ListViewActivity.class);
        startActivity(intent);
    }

}